package main.java.aplicacion.categorias.entidades;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

import main.java.aplicacion.categorias.excepciones.CategoriaError;

import main.java.aplicacion.juegos.entidades.Juego;
import main.java.datatypes.categorias.CategoriaVO;
import main.java.datatypes.juegos.JuegoVO;

public class Categoria {

	private String nombre;
	private List<Juego> juegos;

	public Categoria() {
		this.juegos = new LinkedList<Juego>();
	}

	public Categoria(CategoriaVO dtCategoria) {
		this.nombre = dtCategoria.getNombre();
		// this.juegos = dtCategoria.getJuegos();
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public List<Juego> getJuegos() {
		return juegos;
	}

	public void setJuegos(List<Juego> juegos) {
		this.juegos = juegos;
	}

	public List<String> listarJuegos() throws CategoriaError {
		if (!this.juegos.isEmpty()) {
			List<String> j = new ArrayList<String>();
			ListIterator<Juego> it = this.juegos.listIterator();
			while (it.hasNext()) {
				j.add(((Juego) it.next()).getNombre());
			}
			return j;
		} else
			throw new CategoriaError(CategoriaError.TipoError.LISTA_JUEGOS_CATEGORIA_VACIA);
	}

	public CategoriaVO getCategoriaVO() {
		
		CategoriaVO c = new CategoriaVO();
		c.setNombre(this.nombre);
		if(!this.juegos.isEmpty()){
			
			List<JuegoVO> j = new ArrayList<JuegoVO>();
			for(Juego juegoActual: this.juegos){
				j.add(juegoActual.getJuegoVO());
			}
			c.setJuegos(j);
		}
		return c;
	}
	
	public void add(Juego j){
		this.juegos.add(j);
	}

}